import { ref } from "vue";
import store from "@/store";
import { defineStore } from "pinia";
import { getToken, setToken } from "@/utils/cache/cookie";
import { loginApi, getUserInfoApi } from "@/api/login";
export const useUserStore = defineStore("user", () => {
  const token = ref(getToken() || "");
  const roles = ref([]);
  const username = ref("");
  /** 设置角色数组 */
  const setRoles = (value) => {
    roles.value = value;
  };
  /** 登录 */
  const login = async ({ username, password }) => {
    const data = await loginApi({ username, password });
    setToken(data.token);
    token.value = data.token;
  };
  /** 获取用户详情 */
  const getInfo = async () => {
    const { data } = await getUserInfoApi();
    username.value = data.username;

    // 验证返回的 roles 是否为一个非空数组，否则塞入一个没有任何作用的默认角色，防止路由守卫逻辑进入无限循环
    roles.value = data.roles?.length > 0 ? data.roles : "users";
    console.log(roles.value, "3333");
  };
  // /** 切换角色 */
  // const changeRoles = async (role: string) => {
  //   const newToken = "token-" + role
  //   token.value = newToken
  //   setToken(newToken)
  //   await getInfo()
  //   permissionStore.setRoutes(roles.value)
  //   resetRouter()
  //   permissionStore.dynamicRoutes.forEach((item: RouteRecordRaw) => {
  //     router.addRoute(item)
  //   })
  //   _resetTagsView()
  // }
  // /** 登出 */
  // const logout = () => {
  //   removeToken()
  //   token.value = ""
  //   roles.value = []
  //   resetRouter()
  //   _resetTagsView()
  // }
  // /** 重置 Token */
  // const resetToken = () => {
  //   removeToken()
  //   token.value = ""
  //   roles.value = []
  // }
  // /** 重置 Visited Views 和 Cached Views */
  // const _resetTagsView = () => {
  //   if (!settingsStore.cacheTagsView) {
  //     tagsViewStore.delAllVisitedViews()
  //     tagsViewStore.delAllCachedViews()
  //   }
  // }

  return { setRoles, login, getInfo };
});

/** 在 setup 外使用 */
export function useUserStoreHook() {
  return useUserStore(store);
}
